package com.hongyun.tms.common.dto.prodconsume;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 拖轮能耗记录 新增参数
 *
 * @author liPeng
 * @date 2024-05-31
 **/
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class ProdConsumeSaveReqDto implements Serializable {

    @ApiModelProperty(value = "主键")
    private Long id;
    @ApiModelProperty(value = "左主机开始数")
    @DecimalMin(value = "0.00", message = "不能小于0.00")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal leftMainBegNum;
    @ApiModelProperty(value = "右主机结束数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal rightMainEndNum;
    @ApiModelProperty(value = "拖轮ID")
    @NotNull(message = "拖轮ID不能为空")
    private Long tugId;
    @ApiModelProperty(value = "上报月份")
    @DateTimeFormat(pattern = "yyyy-MM")
    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
    private Date reportMon;
    @ApiModelProperty(value = "1号副机开始数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oneAuxBegNum;
    @ApiModelProperty(value = "2号副机结束数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal twoAuxBegNum;
    @ApiModelProperty(value = "左主机运行时长")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal leftMainWorkHours;
    @ApiModelProperty(value = "右主机运行时长")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal rightMainWorkHours;
    @ApiModelProperty(value = "单耗")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oneHourConsume;
    @ApiModelProperty(value = "加油数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oriAddVolume;
    @ApiModelProperty(value = "开始存油数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oriBegVolume;
    @ApiModelProperty(value = "结束存油数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oriEndVolume;
    @ApiModelProperty(value = "油耗")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oriCost;
    @ApiModelProperty(value = "后吃水")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal ofterDraft;
    @ApiModelProperty(value = "前吃水")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal beforeDraft;
    @ApiModelProperty(value = "用水量")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal waterCost;
    @ApiModelProperty(value = "用电量")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal powerCost;
    @ApiModelProperty(value = "备注")
    @Size(max = 150, message = "备注不能超过150个字符")
    private String remark;
    @ApiModelProperty(value = "1号副机运行时间")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oneAuxWorkHours;
    @ApiModelProperty(value = "2号副机运行时间")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal twoAuxWorkHours;
    @ApiModelProperty(value = "1号副机结束数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal oneAuxEndNum;
    @ApiModelProperty(value = "2号副机结束数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal twoAuxEndNum;
    @ApiModelProperty(value = "右主机开始数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal rightMainBegNum;
    @ApiModelProperty(value = "左主机结束数")
    @DecimalMin(value = "0.00", message = "不能小于0.0")
    @DecimalMax(value = "9999999.99", message = "不能大于9999999.99")
    private BigDecimal leftMainEndNum;
    @ApiModelProperty(value = "记录开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date beginDte;
    @ApiModelProperty(value = "记录结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endDte;
}

